Group Predictions

Row

Win percentage for the week

Season Win Percentage

Games Correct

83

Games Picked

123

Number of predictions

127

Row

This Week’s Predictions
Game Prediction Winner Correct Correct Votes Correct Percent
1 Minnesota Vikings Los Angeles Rams No 7 0.0551
2 Tampa Bay Buccaneers Atlanta Falcons No 61 0.4803
3 Arizona Cardinals Arizona Cardinals Yes 69 0.5433
4 Baltimore Ravens Cleveland Browns No 4 0.0315
5 Green Bay Packers Green Bay Packers Yes 122 0.9606
6 Houston Texans Houston Texans Yes 115 0.9055
7 New York Jets New England Patriots No 14 0.1102
8 Philadelphia Eagles Philadelphia Eagles Yes 76 0.5984
9 Detroit Lions Detroit Lions Yes 123 0.9685
10 Los Angeles Chargers Los Angeles Chargers Yes 100 0.7874
11 Buffalo Bills Buffalo Bills Yes 85 0.6693
12 Denver Broncos Denver Broncos Yes 124 0.9764
13 Washington Commanders Washington Commanders Yes 92 0.7244
14 Kansas City Chiefs Kansas City Chiefs Yes 121 0.9528
15 San Francisco 49ers San Francisco 49ers Yes 92 0.7244
16 Pittsburgh Steelers Pittsburgh Steelers Yes 120 0.9449

Individual Predictions

row

Individual Table

Individual Results
Week 8
Name Weekly # Correct Percent Weeks Picked Season Percent Adj Season Percent Season Trend
Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8
Christopher Sims 11 9 10 8 7 10 12 14 0.8750 8 0.6585 0.6585
Ryan Cvik 10 8 9 11 9 11 11 13 0.8125 8 0.6667 0.6667
Robert Sokol 10 8 NA NA 6 9 9 13 0.8125 6 0.6044 0.4533
Thomas Brenstuhl 9 8 NA 6 7 9 10 13 0.8125 7 0.5794 0.5070
Brian Patterson 11 6 9 9 6 NA 9 13 0.8125 7 0.5780 0.5057
Edward Ford 9 7 6 10 5 10 10 13 0.8125 8 0.5691 0.5691
Joshua Tracey 12 5 8 6 7 NA 9 13 0.8125 7 0.5505 0.4817
Steven Maisonneuve NA NA NA NA 11 10 11 12 0.7500 4 0.7458 0.3729
Matthew Blair NA NA NA NA NA 11 10 12 0.7500 3 0.7333 0.2750
Chris Papageorge 14 8 10 11 8 12 12 12 0.7500 8 0.7073 0.7073
Heather Kohler 12 NA 7 12 9 11 NA 12 0.7500 6 0.6848 0.5136
Randolph Tidd 11 7 8 12 NA 12 11 12 0.7500 7 0.6697 0.5860
Nicholas Cinco 12 8 NA NA 6 11 11 12 0.7500 6 0.6593 0.4945
Anthony Brinson 11 7 NA 9 10 11 9 12 0.7500 7 0.6449 0.5643
Matthew Schultz 13 10 9 8 9 9 9 12 0.7500 8 0.6423 0.6423
Michelle Fraterrigo 11 8 9 9 7 11 12 12 0.7500 8 0.6423 0.6423
Bryson Scott 10 9 7 NA 7 12 11 12 0.7500 7 0.6355 0.5561
Patrick Tynan 12 8 7 9 8 12 NA 12 0.7500 7 0.6296 0.5509
Nicole Dike 13 7 8 10 7 10 10 12 0.7500 8 0.6260 0.6260
Keisha Vasquez 8 7 9 9 11 11 9 12 0.7500 8 0.6179 0.6179
Daniel Baller 14 6 9 8 7 9 10 12 0.7500 8 0.6098 0.6098
Nahir Shepard 11 8 10 8 6 12 8 12 0.7500 8 0.6098 0.6098
George Brown 14 7 8 7 6 11 10 12 0.7500 8 0.6098 0.6098
Vincent Scannelli 11 7 7 11 8 8 11 12 0.7500 8 0.6098 0.6098
Pablo Burgosramos 9 5 8 9 5 14 12 12 0.7500 8 0.6016 0.6016
Karen Richardson 10 9 7 9 11 8 8 12 0.7500 8 0.6016 0.6016
Jennifer Arty 10 7 9 7 7 12 8 12 0.7500 8 0.5854 0.5854
Kamar Morgan 12 6 8 5 8 12 9 12 0.7500 8 0.5854 0.5854
Terry Hardison 13 8 6 7 4 11 10 12 0.7500 8 0.5772 0.5772
Robert Lynch 6 9 8 6 9 7 7 12 0.7500 8 0.5203 0.5203
Robert Cunningham 14 9 10 12 8 12 11 11 0.6875 8 0.7073 0.7073
Robert Gelo 14 8 9 9 8 13 13 11 0.6875 8 0.6911 0.6911
Kevin Kehoe 13 7 9 10 8 13 12 11 0.6875 8 0.6748 0.6748
Anthony Bloss 13 8 8 11 8 13 11 11 0.6875 8 0.6748 0.6748
Michael Linder 11 9 9 NA NA 12 10 11 0.6875 6 0.6667 0.5000
Travis Delagardelle 11 12 10 8 6 11 12 11 0.6875 8 0.6585 0.6585
Nathan Brown 13 8 9 11 9 NA 10 11 0.6875 7 0.6514 0.5700
David Dupree 13 8 10 9 7 11 11 11 0.6875 8 0.6504 0.6504
George Sweet 13 9 6 10 11 9 11 11 0.6875 8 0.6504 0.6504
Shawn Carden 10 9 10 10 8 11 10 11 0.6875 8 0.6423 0.6423
Erik Neumann 12 8 9 9 7 13 10 11 0.6875 8 0.6423 0.6423
Jeremy Stieler 11 9 6 11 6 13 11 11 0.6875 8 0.6341 0.6341
Jennifer Bouland 13 8 10 7 8 11 10 11 0.6875 8 0.6341 0.6341
Philip Driskill 12 7 8 10 8 NA 13 11 0.6875 7 0.6330 0.5539
Brian Hollmann NA NA NA 8 8 10 10 11 0.6875 5 0.6267 0.3917
Heather Ellenberger 13 8 7 8 7 12 11 11 0.6875 8 0.6260 0.6260
Matthew Olguin 10 8 9 9 7 12 11 11 0.6875 8 0.6260 0.6260
Antonio Mitchell 11 7 8 9 9 11 10 11 0.6875 8 0.6179 0.6179
Daniel Halse 12 6 8 10 7 13 9 11 0.6875 8 0.6179 0.6179
Jeffrey Rudderforth 11 11 10 9 6 7 10 11 0.6875 8 0.6098 0.6098
Diance Durand 9 9 12 7 8 10 9 11 0.6875 8 0.6098 0.6098
Jared Kaanga 11 9 9 8 7 10 9 11 0.6875 8 0.6016 0.6016
Michael Branson 9 8 8 9 8 11 9 11 0.6875 8 0.5935 0.5935
Walter Archambo 8 8 7 9 6 12 11 11 0.6875 8 0.5854 0.5854
Rachel Follo 15 8 6 6 9 7 10 11 0.6875 8 0.5854 0.5854
Noah Gosswiller 8 7 NA 10 8 NA 10 11 0.6875 6 0.5806 0.4354
Jeffrey Zornes 9 11 6 8 7 10 9 11 0.6875 8 0.5772 0.5772
Zechariah Ziebarth 8 8 8 10 5 10 10 11 0.6875 8 0.5691 0.5691
Louie Renew 9 8 12 4 10 8 8 11 0.6875 8 0.5691 0.5691
Jonathan Smith 11 NA 4 10 7 NA 8 11 0.6875 6 0.5484 0.4113
Jason Jackson 12 7 5 6 5 12 9 11 0.6875 8 0.5447 0.5447
Richard Conkle 7 6 6 8 7 10 12 11 0.6875 8 0.5447 0.5447
Steven Webster 7 7 9 6 7 9 NA 11 0.6875 7 0.5185 0.4537
Wayne Schofield 7 5 9 5 7 7 11 11 0.6875 8 0.5041 0.5041
Jeremy Krammes 12 NA NA NA NA NA NA 10 0.6250 2 0.6875 0.1719
Bruce Williams 13 9 10 8 9 13 12 10 0.6250 8 0.6829 0.6829
Chester Todd 13 8 8 8 9 13 13 10 0.6250 8 0.6667 0.6667
Michael Pacifico 13 8 7 9 9 12 12 10 0.6250 8 0.6504 0.6504
Bradley Hobson 13 7 8 11 7 13 10 10 0.6250 8 0.6423 0.6423
Jordan Forwood 11 8 6 11 NA 13 NA 10 0.6250 6 0.6277 0.4708
Paul Presti 12 8 9 12 7 11 8 10 0.6250 8 0.6260 0.6260
Randy Dick 11 7 8 8 9 14 10 10 0.6250 8 0.6260 0.6260
Rafael Torres 12 9 8 7 8 10 12 10 0.6250 8 0.6179 0.6179
Richard Beeghley 11 7 6 11 7 14 10 10 0.6250 8 0.6179 0.6179
Ramar Williams 10 8 7 11 8 11 11 10 0.6250 8 0.6179 0.6179
Kenneth Nielsen 13 8 7 NA 8 9 11 10 0.6250 7 0.6168 0.5397
Brayant Rivera 10 8 9 8 6 13 11 10 0.6250 8 0.6098 0.6098
Jonathon Leslein 10 8 7 10 8 12 10 10 0.6250 8 0.6098 0.6098
Darryle Sellers 11 11 6 8 9 11 9 10 0.6250 8 0.6098 0.6098
Jason Schattel 13 7 6 9 10 11 9 10 0.6250 8 0.6098 0.6098
Ryan Baum 14 4 9 10 9 NA 10 10 0.6250 7 0.6055 0.5298
Montee Brown 10 6 8 7 8 14 11 10 0.6250 8 0.6016 0.6016
Daniel Major 8 10 11 6 8 11 NA 10 0.6250 7 0.5926 0.5185
Megan Fitzgerald 8 11 9 10 NA NA 8 10 0.6250 6 0.5895 0.4421
Earl Dixon 10 9 6 9 9 NA 11 10 0.6250 7 0.5872 0.5138
Melissa Printup 8 9 9 6 10 10 10 10 0.6250 8 0.5854 0.5854
Scott Lefton 10 8 8 7 7 11 11 10 0.6250 8 0.5854 0.5854
Thomas Mccoy 10 7 6 8 9 11 11 10 0.6250 8 0.5854 0.5854
Steward Hogans 10 7 10 NA NA NA NA 10 0.6250 4 0.5781 0.2890
Tara Bridgett 11 8 8 8 NA 9 NA 10 0.6250 6 0.5745 0.4309
Ronald Schmidt 10 10 5 9 6 8 12 10 0.6250 8 0.5691 0.5691
Min Choi 10 NA 7 NA 8 7 NA 10 0.6250 5 0.5526 0.3454
Sheryl Claiborne-Smith 11 7 NA NA NA 7 7 10 0.6250 5 0.5455 0.3409
Kyle May 10 8 5 6 8 NA 12 10 0.6250 7 0.5413 0.4736
Gary Lawrence 10 6 5 5 7 9 9 10 0.6250 8 0.4959 0.4959
Keven Talbert 10 7 9 11 9 14 13 9 0.5625 8 0.6667 0.6667
Marc Agne 14 7 9 13 6 13 10 9 0.5625 8 0.6585 0.6585
Aubrey Conn 13 7 10 9 8 12 12 9 0.5625 8 0.6504 0.6504
William Schouviller 12 7 9 9 11 13 10 9 0.5625 8 0.6504 0.6504
Karen Coleman 13 6 NA 11 9 9 10 9 0.5625 7 0.6262 0.5479
James Small 12 NA 9 10 8 10 9 9 0.5625 7 0.6262 0.5479
Michael Moss 13 8 8 8 10 13 8 9 0.5625 8 0.6260 0.6260
Clevante Granville 9 11 NA NA 5 11 11 9 0.5625 6 0.6154 0.4615
Kevin Buettner 12 8 8 10 7 11 10 9 0.5625 8 0.6098 0.6098
Gregory Brown 15 7 6 9 8 12 9 9 0.5625 8 0.6098 0.6098
Derrick Elam 13 9 8 11 7 10 8 9 0.5625 8 0.6098 0.6098
Stephen Bush 9 7 4 10 9 13 13 9 0.5625 8 0.6016 0.6016
Nicholas Nguyen 11 8 5 8 7 12 11 9 0.5625 8 0.5772 0.5772
Yiming Hu 12 NA 7 7 6 8 12 9 0.5625 7 0.5701 0.4988
Cade Martinez 10 7 8 8 6 11 11 9 0.5625 8 0.5691 0.5691
Cheryl Brown 11 6 9 8 8 10 NA 9 0.5625 7 0.5648 0.4942
Marcus Evans 11 8 NA 8 7 10 7 9 0.5625 7 0.5607 0.4906
Christopher Mulcahy 11 9 7 8 NA 8 9 9 0.5625 7 0.5596 0.4896
Jose Torres Mendoza 12 8 8 8 NA NA 8 9 0.5625 6 0.5579 0.4184
Michael Moore 11 6 7 7 8 12 NA 9 0.5625 7 0.5556 0.4861
Bunnaro Sun 12 5 8 11 6 8 9 9 0.5625 8 0.5528 0.5528
Jack Wheeler 9 6 5 10 8 NA 9 9 0.5625 7 0.5138 0.4496
Andrew Gray 5 8 9 7 NA NA 7 9 0.5625 6 0.4737 0.3553
Shaun Dahl 14 7 9 11 10 10 10 8 0.5000 8 0.6423 0.6423
Kevin Green 11 9 NA 8 7 12 NA 8 0.5000 6 0.5978 0.4484
Kristen White 14 7 9 9 8 9 9 8 0.5000 8 0.5935 0.5935
Thomas Cho 10 6 NA 11 7 12 NA 8 0.5000 6 0.5870 0.4402
David Humes 10 9 8 11 5 8 12 8 0.5000 8 0.5772 0.5772
Trevor Macgavin 12 7 10 8 8 8 9 7 0.4375 8 0.5610 0.5610
Gabriel Quinones 10 7 6 9 NA 11 8 7 0.4375 7 0.5321 0.4656
Akilah Gamble 9 NA 12 9 6 8 12 6 0.3750 7 0.5794 0.5070
Ashlyn Dortch 9 NA NA 8 NA 5 9 6 0.3750 5 0.4805 0.3003
Clayton Grimes 14 NA NA NA NA NA NA NA 0.0000 1 0.8750 0.1094
Tanaysa Henderson NA NA NA NA NA 12 NA NA 0.0000 1 0.8571 0.1071
Brittany Pillar NA NA NA NA NA 10 12 NA 0.0000 2 0.7586 0.1897
Wallace Savage 12 NA NA NA NA NA NA NA 0.0000 1 0.7500 0.0938
Brian Holder 12 NA NA NA NA NA NA NA 0.0000 1 0.7500 0.0938
Sandra Carter 12 NA NA NA NA NA NA NA 0.0000 1 0.7500 0.0938
Terrence Lee 11 NA NA NA NA NA NA NA 0.0000 1 0.6875 0.0859
Daniel Gray 11 NA NA NA NA NA NA NA 0.0000 1 0.6875 0.0859
Jeremy Mounce 12 8 8 NA 10 12 NA NA 0.0000 5 0.6579 0.4112
Pamela Augustine 14 9 9 NA 7 11 9 NA 0.0000 6 0.6484 0.4863
Paul Seitz 11 9 9 NA 8 10 11 NA 0.0000 6 0.6374 0.4780
George Hall 12 NA 8 NA NA NA NA NA 0.0000 2 0.6250 0.1562
Wayne Gokey 13 7 NA 11 NA NA 8 NA 0.0000 4 0.6190 0.3095
David Hadley 13 10 8 NA 8 NA 8 NA 0.0000 5 0.6104 0.3815
Amy Asberry 11 8 6 10 NA 12 9 NA 0.0000 6 0.6022 0.4516
Jonathan Knight 13 10 9 6 7 NA 11 NA 0.0000 6 0.6022 0.4516
Brandon Parks 12 6 9 9 6 13 NA NA 0.0000 6 0.5978 0.4484
Jeffrey Dusza 11 8 NA NA NA NA NA NA 0.0000 2 0.5938 0.1484
Cherylynn Vidal 13 9 8 8 NA NA NA NA 0.0000 4 0.5938 0.2969
Adam Konkle 10 9 NA NA NA NA NA NA 0.0000 2 0.5938 0.1484
Jason Miranda 10 7 8 NA 9 11 8 NA 0.0000 6 0.5824 0.4368
Jennifer Wilson 11 9 10 6 NA 7 11 NA 0.0000 6 0.5806 0.4354
Darvin Graham 12 7 6 9 8 11 9 NA 0.0000 7 0.5794 0.5070
Ryan Shipley 11 6 10 8 5 9 11 NA 0.0000 7 0.5607 0.4906
Joseph Martin 10 7 8 8 8 10 9 NA 0.0000 7 0.5607 0.4906
George Mancini 11 8 6 NA 8 6 12 NA 0.0000 6 0.5604 0.4203
Desmond Jenkins 10 7 7 NA 7 12 8 NA 0.0000 6 0.5604 0.4203
David Plate 10 8 8 8 9 NA NA NA 0.0000 5 0.5513 0.3446
Lawrence Thuotte 9 5 12 NA 8 NA NA NA 0.0000 4 0.5484 0.2742
Donald Park 9 NA 6 NA NA 10 NA NA 0.0000 3 0.5435 0.2038
Anthony Rockemore 13 8 6 8 7 NA 8 NA 0.0000 6 0.5376 0.4032
Monte Henderson 9 8 NA NA NA NA NA NA 0.0000 2 0.5312 0.1328
David Kim 9 8 NA NA NA NA NA NA 0.0000 2 0.5312 0.1328
Jamie Ainsleigh-Wong 9 8 9 9 8 5 NA NA 0.0000 6 0.5217 0.3913
Robert Martin 7 NA 9 8 8 8 7 NA 0.0000 6 0.5165 0.3874
Jay Kelly 10 9 7 7 5 10 7 NA 0.0000 7 0.5140 0.4498
Zachary Brosemer 8 NA NA NA NA NA NA NA 0.0000 1 0.5000 0.0625
Antonio Chapa 8 NA NA NA NA NA NA NA 0.0000 1 0.5000 0.0625
Vincent Kandian 9 8 8 7 NA NA NA NA 0.0000 4 0.5000 0.2500
Gabrieal Feiling 10 NA 5 NA NA NA NA NA 0.0000 2 0.4688 0.1172
Ashley Johnson 9 NA 6 NA 6 NA NA NA 0.0000 3 0.4565 0.1712
Jasprin Smith 6 NA NA NA NA NA NA NA 0.0000 1 0.3750 0.0469
Robert Epps NA 6 NA NA NA NA NA NA 0.0000 1 0.3750 0.0469

Season Leaderboard

Season Leaderboard (Season Percent)
Week 8
Season Rank Name Donuts Won Weeks Picked Season Percent Adj Season Percent Season Trend
1 Clayton Grimes 0 1 0.8750 0.1094
2 Tanaysa Henderson 0 1 0.8571 0.1071
3 Brittany Pillar 0 2 0.7586 0.1897
4 Brian Holder 0 1 0.7500 0.0938
4 Sandra Carter 0 1 0.7500 0.0938
4 Wallace Savage 0 1 0.7500 0.0938
7 Steven Maisonneuve 1 4 0.7458 0.3729
8 Matthew Blair 0 3 0.7333 0.2750
9 Chris Papageorge 0 8 0.7073 0.7073
9 Robert Cunningham 0 8 0.7073 0.7073
11 Robert Gelo 1 8 0.6911 0.6911
12 Daniel Gray 0 1 0.6875 0.0859
12 Jeremy Krammes 0 2 0.6875 0.1719
12 Terrence Lee 0 1 0.6875 0.0859
15 Heather Kohler 0 6 0.6848 0.5136
16 Bruce Williams 0 8 0.6829 0.6829
17 Anthony Bloss 0 8 0.6748 0.6748
17 Kevin Kehoe 0 8 0.6748 0.6748
19 Randolph Tidd 0 7 0.6697 0.5860
20 Chester Todd 1 8 0.6667 0.6667
20 Keven Talbert 2 8 0.6667 0.6667
20 Michael Linder 0 6 0.6667 0.5000
20 Ryan Cvik 0 8 0.6667 0.6667
24 Nicholas Cinco 0 6 0.6593 0.4945
25 Christopher Sims 1 8 0.6585 0.6585
25 Marc Agne 1 8 0.6585 0.6585
25 Travis Delagardelle 1 8 0.6585 0.6585
28 Jeremy Mounce 0 5 0.6579 0.4112
29 Nathan Brown 0 7 0.6514 0.5700
30 Aubrey Conn 0 8 0.6504 0.6504
30 David Dupree 0 8 0.6504 0.6504
30 George Sweet 1 8 0.6504 0.6504
30 Michael Pacifico 0 8 0.6504 0.6504
30 William Schouviller 1 8 0.6504 0.6504
35 Pamela Augustine 0 6 0.6484 0.4863
36 Anthony Brinson 0 7 0.6449 0.5643
37 Bradley Hobson 0 8 0.6423 0.6423
37 Erik Neumann 0 8 0.6423 0.6423
37 Matthew Schultz 0 8 0.6423 0.6423
37 Michelle Fraterrigo 0 8 0.6423 0.6423
37 Shaun Dahl 0 8 0.6423 0.6423
37 Shawn Carden 0 8 0.6423 0.6423
43 Paul Seitz 0 6 0.6374 0.4780
44 Bryson Scott 0 7 0.6355 0.5561
45 Jennifer Bouland 0 8 0.6341 0.6341
45 Jeremy Stieler 0 8 0.6341 0.6341
47 Philip Driskill 1 7 0.6330 0.5539
48 Patrick Tynan 0 7 0.6296 0.5509
49 Jordan Forwood 0 6 0.6277 0.4708
50 Brian Hollmann 0 5 0.6267 0.3917
51 James Small 0 7 0.6262 0.5479
51 Karen Coleman 0 7 0.6262 0.5479
53 Heather Ellenberger 0 8 0.6260 0.6260
53 Matthew Olguin 0 8 0.6260 0.6260
53 Michael Moss 0 8 0.6260 0.6260
53 Nicole Dike 0 8 0.6260 0.6260
53 Paul Presti 0 8 0.6260 0.6260
53 Randy Dick 1 8 0.6260 0.6260
59 George Hall 0 2 0.6250 0.1562
60 Wayne Gokey 0 4 0.6190 0.3095
61 Antonio Mitchell 0 8 0.6179 0.6179
61 Daniel Halse 0 8 0.6179 0.6179
61 Keisha Vasquez 1 8 0.6179 0.6179
61 Rafael Torres 0 8 0.6179 0.6179
61 Ramar Williams 0 8 0.6179 0.6179
61 Richard Beeghley 1 8 0.6179 0.6179
67 Kenneth Nielsen 0 7 0.6168 0.5397
68 Clevante Granville 0 6 0.6154 0.4615
69 David Hadley 0 5 0.6104 0.3815
70 Brayant Rivera 0 8 0.6098 0.6098
70 Daniel Baller 0 8 0.6098 0.6098
70 Darryle Sellers 0 8 0.6098 0.6098
70 Derrick Elam 0 8 0.6098 0.6098
70 Diance Durand 1 8 0.6098 0.6098
70 George Brown 0 8 0.6098 0.6098
70 Gregory Brown 1 8 0.6098 0.6098
70 Jason Schattel 0 8 0.6098 0.6098
70 Jeffrey Rudderforth 0 8 0.6098 0.6098
70 Jonathon Leslein 0 8 0.6098 0.6098
70 Kevin Buettner 0 8 0.6098 0.6098
70 Nahir Shepard 0 8 0.6098 0.6098
70 Vincent Scannelli 0 8 0.6098 0.6098
83 Ryan Baum 0 7 0.6055 0.5298
84 Robert Sokol 0 6 0.6044 0.4533
85 Amy Asberry 0 6 0.6022 0.4516
85 Jonathan Knight 0 6 0.6022 0.4516
87 Jared Kaanga 0 8 0.6016 0.6016
87 Karen Richardson 1 8 0.6016 0.6016
87 Montee Brown 1 8 0.6016 0.6016
87 Pablo Burgosramos 1 8 0.6016 0.6016
87 Stephen Bush 1 8 0.6016 0.6016
92 Brandon Parks 0 6 0.5978 0.4484
92 Kevin Green 0 6 0.5978 0.4484
94 Adam Konkle 0 2 0.5938 0.1484
94 Cherylynn Vidal 0 4 0.5938 0.2969
94 Jeffrey Dusza 0 2 0.5938 0.1484
97 Kristen White 0 8 0.5935 0.5935
97 Michael Branson 0 8 0.5935 0.5935
99 Daniel Major 0 7 0.5926 0.5185
100 Megan Fitzgerald 0 6 0.5895 0.4421
101 Earl Dixon 0 7 0.5872 0.5138
102 Thomas Cho 0 6 0.5870 0.4402
103 Jennifer Arty 0 8 0.5854 0.5854
103 Kamar Morgan 0 8 0.5854 0.5854
103 Melissa Printup 0 8 0.5854 0.5854
103 Rachel Follo 1 8 0.5854 0.5854
103 Scott Lefton 0 8 0.5854 0.5854
103 Thomas Mccoy 0 8 0.5854 0.5854
103 Walter Archambo 0 8 0.5854 0.5854
110 Jason Miranda 0 6 0.5824 0.4368
111 Jennifer Wilson 0 6 0.5806 0.4354
111 Noah Gosswiller 0 6 0.5806 0.4354
113 Akilah Gamble 1 7 0.5794 0.5070
113 Darvin Graham 0 7 0.5794 0.5070
113 Thomas Brenstuhl 0 7 0.5794 0.5070
116 Steward Hogans 0 4 0.5781 0.2890
117 Brian Patterson 0 7 0.5780 0.5057
118 David Humes 0 8 0.5772 0.5772
118 Jeffrey Zornes 0 8 0.5772 0.5772
118 Nicholas Nguyen 0 8 0.5772 0.5772
118 Terry Hardison 0 8 0.5772 0.5772
122 Tara Bridgett 0 6 0.5745 0.4309
123 Yiming Hu 0 7 0.5701 0.4988
124 Cade Martinez 0 8 0.5691 0.5691
124 Edward Ford 0 8 0.5691 0.5691
124 Louie Renew 1 8 0.5691 0.5691
124 Ronald Schmidt 0 8 0.5691 0.5691
124 Zechariah Ziebarth 0 8 0.5691 0.5691
129 Cheryl Brown 0 7 0.5648 0.4942
130 Trevor Macgavin 0 8 0.5610 0.5610
131 Joseph Martin 0 7 0.5607 0.4906
131 Marcus Evans 0 7 0.5607 0.4906
131 Ryan Shipley 0 7 0.5607 0.4906
134 Desmond Jenkins 0 6 0.5604 0.4203
134 George Mancini 0 6 0.5604 0.4203
136 Christopher Mulcahy 0 7 0.5596 0.4896
137 Jose Torres Mendoza 0 6 0.5579 0.4184
138 Michael Moore 0 7 0.5556 0.4861
139 Bunnaro Sun 0 8 0.5528 0.5528
140 Min Choi 0 5 0.5526 0.3454
141 David Plate 0 5 0.5513 0.3446
142 Joshua Tracey 0 7 0.5505 0.4817
143 Jonathan Smith 0 6 0.5484 0.4113
143 Lawrence Thuotte 1 4 0.5484 0.2742
145 Sheryl Claiborne-Smith 0 5 0.5455 0.3409
146 Jason Jackson 0 8 0.5447 0.5447
146 Richard Conkle 0 8 0.5447 0.5447
148 Donald Park 0 3 0.5435 0.2038
149 Kyle May 0 7 0.5413 0.4736
150 Anthony Rockemore 0 6 0.5376 0.4032
151 Gabriel Quinones 0 7 0.5321 0.4656
152 David Kim 0 2 0.5312 0.1328
152 Monte Henderson 0 2 0.5312 0.1328
154 Jamie Ainsleigh-Wong 0 6 0.5217 0.3913
155 Robert Lynch 0 8 0.5203 0.5203
156 Steven Webster 0 7 0.5185 0.4537
157 Robert Martin 0 6 0.5165 0.3874
158 Jay Kelly 0 7 0.5140 0.4498
159 Jack Wheeler 0 7 0.5138 0.4496
160 Wayne Schofield 0 8 0.5041 0.5041
161 Antonio Chapa 0 1 0.5000 0.0625
161 Vincent Kandian 0 4 0.5000 0.2500
161 Zachary Brosemer 0 1 0.5000 0.0625
164 Gary Lawrence 0 8 0.4959 0.4959
165 Ashlyn Dortch 0 5 0.4805 0.3003
166 Andrew Gray 0 6 0.4737 0.3553
167 Gabrieal Feiling 0 2 0.4688 0.1172
168 Ashley Johnson 0 3 0.4565 0.1712
169 Jasprin Smith 0 1 0.3750 0.0469
169 Robert Epps 0 1 0.3750 0.0469

Adjusted Season Leaderboard

Season Leaderboard (Adjusted Season Percent)
Week 8
Season Rank Name Donuts Won Weeks Picked Season Percent Adj Season Percent Season Trend
1 Chris Papageorge 0 8 0.7073 0.7073
1 Robert Cunningham 0 8 0.7073 0.7073
3 Robert Gelo 1 8 0.6911 0.6911
4 Bruce Williams 0 8 0.6829 0.6829
5 Anthony Bloss 0 8 0.6748 0.6748
5 Kevin Kehoe 0 8 0.6748 0.6748
7 Chester Todd 1 8 0.6667 0.6667
7 Keven Talbert 2 8 0.6667 0.6667
7 Ryan Cvik 0 8 0.6667 0.6667
10 Christopher Sims 1 8 0.6585 0.6585
10 Marc Agne 1 8 0.6585 0.6585
10 Travis Delagardelle 1 8 0.6585 0.6585
13 Aubrey Conn 0 8 0.6504 0.6504
13 David Dupree 0 8 0.6504 0.6504
13 George Sweet 1 8 0.6504 0.6504
13 Michael Pacifico 0 8 0.6504 0.6504
13 William Schouviller 1 8 0.6504 0.6504
18 Bradley Hobson 0 8 0.6423 0.6423
18 Erik Neumann 0 8 0.6423 0.6423
18 Matthew Schultz 0 8 0.6423 0.6423
18 Michelle Fraterrigo 0 8 0.6423 0.6423
18 Shaun Dahl 0 8 0.6423 0.6423
18 Shawn Carden 0 8 0.6423 0.6423
24 Jennifer Bouland 0 8 0.6341 0.6341
24 Jeremy Stieler 0 8 0.6341 0.6341
26 Heather Ellenberger 0 8 0.6260 0.6260
26 Matthew Olguin 0 8 0.6260 0.6260
26 Michael Moss 0 8 0.6260 0.6260
26 Nicole Dike 0 8 0.6260 0.6260
26 Paul Presti 0 8 0.6260 0.6260
26 Randy Dick 1 8 0.6260 0.6260
32 Antonio Mitchell 0 8 0.6179 0.6179
32 Daniel Halse 0 8 0.6179 0.6179
32 Keisha Vasquez 1 8 0.6179 0.6179
32 Rafael Torres 0 8 0.6179 0.6179
32 Ramar Williams 0 8 0.6179 0.6179
32 Richard Beeghley 1 8 0.6179 0.6179
38 Brayant Rivera 0 8 0.6098 0.6098
38 Daniel Baller 0 8 0.6098 0.6098
38 Darryle Sellers 0 8 0.6098 0.6098
38 Derrick Elam 0 8 0.6098 0.6098
38 Diance Durand 1 8 0.6098 0.6098
38 George Brown 0 8 0.6098 0.6098
38 Gregory Brown 1 8 0.6098 0.6098
38 Jason Schattel 0 8 0.6098 0.6098
38 Jeffrey Rudderforth 0 8 0.6098 0.6098
38 Jonathon Leslein 0 8 0.6098 0.6098
38 Kevin Buettner 0 8 0.6098 0.6098
38 Nahir Shepard 0 8 0.6098 0.6098
38 Vincent Scannelli 0 8 0.6098 0.6098
51 Jared Kaanga 0 8 0.6016 0.6016
51 Karen Richardson 1 8 0.6016 0.6016
51 Montee Brown 1 8 0.6016 0.6016
51 Pablo Burgosramos 1 8 0.6016 0.6016
51 Stephen Bush 1 8 0.6016 0.6016
56 Kristen White 0 8 0.5935 0.5935
56 Michael Branson 0 8 0.5935 0.5935
58 Randolph Tidd 0 7 0.6697 0.5860
59 Jennifer Arty 0 8 0.5854 0.5854
59 Kamar Morgan 0 8 0.5854 0.5854
59 Melissa Printup 0 8 0.5854 0.5854
59 Rachel Follo 1 8 0.5854 0.5854
59 Scott Lefton 0 8 0.5854 0.5854
59 Thomas Mccoy 0 8 0.5854 0.5854
59 Walter Archambo 0 8 0.5854 0.5854
66 David Humes 0 8 0.5772 0.5772
66 Jeffrey Zornes 0 8 0.5772 0.5772
66 Nicholas Nguyen 0 8 0.5772 0.5772
66 Terry Hardison 0 8 0.5772 0.5772
70 Nathan Brown 0 7 0.6514 0.5700
71 Cade Martinez 0 8 0.5691 0.5691
71 Edward Ford 0 8 0.5691 0.5691
71 Louie Renew 1 8 0.5691 0.5691
71 Ronald Schmidt 0 8 0.5691 0.5691
71 Zechariah Ziebarth 0 8 0.5691 0.5691
76 Anthony Brinson 0 7 0.6449 0.5643
77 Trevor Macgavin 0 8 0.5610 0.5610
78 Bryson Scott 0 7 0.6355 0.5561
79 Philip Driskill 1 7 0.6330 0.5539
80 Bunnaro Sun 0 8 0.5528 0.5528
81 Patrick Tynan 0 7 0.6296 0.5509
82 James Small 0 7 0.6262 0.5479
82 Karen Coleman 0 7 0.6262 0.5479
84 Jason Jackson 0 8 0.5447 0.5447
84 Richard Conkle 0 8 0.5447 0.5447
86 Kenneth Nielsen 0 7 0.6168 0.5397
87 Ryan Baum 0 7 0.6055 0.5298
88 Robert Lynch 0 8 0.5203 0.5203
89 Daniel Major 0 7 0.5926 0.5185
90 Earl Dixon 0 7 0.5872 0.5138
91 Heather Kohler 0 6 0.6848 0.5136
92 Akilah Gamble 1 7 0.5794 0.5070
92 Darvin Graham 0 7 0.5794 0.5070
92 Thomas Brenstuhl 0 7 0.5794 0.5070
95 Brian Patterson 0 7 0.5780 0.5057
96 Wayne Schofield 0 8 0.5041 0.5041
97 Michael Linder 0 6 0.6667 0.5000
98 Yiming Hu 0 7 0.5701 0.4988
99 Gary Lawrence 0 8 0.4959 0.4959
100 Nicholas Cinco 0 6 0.6593 0.4945
101 Cheryl Brown 0 7 0.5648 0.4942
102 Joseph Martin 0 7 0.5607 0.4906
102 Marcus Evans 0 7 0.5607 0.4906
102 Ryan Shipley 0 7 0.5607 0.4906
105 Christopher Mulcahy 0 7 0.5596 0.4896
106 Pamela Augustine 0 6 0.6484 0.4863
107 Michael Moore 0 7 0.5556 0.4861
108 Joshua Tracey 0 7 0.5505 0.4817
109 Paul Seitz 0 6 0.6374 0.4780
110 Kyle May 0 7 0.5413 0.4736
111 Jordan Forwood 0 6 0.6277 0.4708
112 Gabriel Quinones 0 7 0.5321 0.4656
113 Clevante Granville 0 6 0.6154 0.4615
114 Steven Webster 0 7 0.5185 0.4537
115 Robert Sokol 0 6 0.6044 0.4533
116 Amy Asberry 0 6 0.6022 0.4516
116 Jonathan Knight 0 6 0.6022 0.4516
118 Jay Kelly 0 7 0.5140 0.4498
119 Jack Wheeler 0 7 0.5138 0.4496
120 Brandon Parks 0 6 0.5978 0.4484
120 Kevin Green 0 6 0.5978 0.4484
122 Megan Fitzgerald 0 6 0.5895 0.4421
123 Thomas Cho 0 6 0.5870 0.4402
124 Jason Miranda 0 6 0.5824 0.4368
125 Jennifer Wilson 0 6 0.5806 0.4354
125 Noah Gosswiller 0 6 0.5806 0.4354
127 Tara Bridgett 0 6 0.5745 0.4309
128 Desmond Jenkins 0 6 0.5604 0.4203
128 George Mancini 0 6 0.5604 0.4203
130 Jose Torres Mendoza 0 6 0.5579 0.4184
131 Jonathan Smith 0 6 0.5484 0.4113
132 Jeremy Mounce 0 5 0.6579 0.4112
133 Anthony Rockemore 0 6 0.5376 0.4032
134 Brian Hollmann 0 5 0.6267 0.3917
135 Jamie Ainsleigh-Wong 0 6 0.5217 0.3913
136 Robert Martin 0 6 0.5165 0.3874
137 David Hadley 0 5 0.6104 0.3815
138 Steven Maisonneuve 1 4 0.7458 0.3729
139 Andrew Gray 0 6 0.4737 0.3553
140 Min Choi 0 5 0.5526 0.3454
141 David Plate 0 5 0.5513 0.3446
142 Sheryl Claiborne-Smith 0 5 0.5455 0.3409
143 Wayne Gokey 0 4 0.6190 0.3095
144 Ashlyn Dortch 0 5 0.4805 0.3003
145 Cherylynn Vidal 0 4 0.5938 0.2969
146 Steward Hogans 0 4 0.5781 0.2890
147 Matthew Blair 0 3 0.7333 0.2750
148 Lawrence Thuotte 1 4 0.5484 0.2742
149 Vincent Kandian 0 4 0.5000 0.2500
150 Donald Park 0 3 0.5435 0.2038
151 Brittany Pillar 0 2 0.7586 0.1897
152 Jeremy Krammes 0 2 0.6875 0.1719
153 Ashley Johnson 0 3 0.4565 0.1712
154 George Hall 0 2 0.6250 0.1562
155 Adam Konkle 0 2 0.5938 0.1484
155 Jeffrey Dusza 0 2 0.5938 0.1484
157 David Kim 0 2 0.5312 0.1328
157 Monte Henderson 0 2 0.5312 0.1328
159 Gabrieal Feiling 0 2 0.4688 0.1172
160 Clayton Grimes 0 1 0.8750 0.1094
161 Tanaysa Henderson 0 1 0.8571 0.1071
162 Brian Holder 0 1 0.7500 0.0938
162 Sandra Carter 0 1 0.7500 0.0938
162 Wallace Savage 0 1 0.7500 0.0938
165 Daniel Gray 0 1 0.6875 0.0859
165 Terrence Lee 0 1 0.6875 0.0859
167 Antonio Chapa 0 1 0.5000 0.0625
167 Zachary Brosemer 0 1 0.5000 0.0625
169 Jasprin Smith 0 1 0.3750 0.0469
169 Robert Epps 0 1 0.3750 0.0469

Data

---
title: "2024 NFL Moneyline Picks"
output: 
  flexdashboard::flex_dashboard:
    theme:
      version: 4
      bootswatch: spacelab
    orientation: rows
    vertical_layout: fill
    social: ["menu"]
    source_code: embed
    navbar:
      - { title: "Created by: Daniel Baller", icon: "fa-github", href: "https://github.com/danielpballer"  }
---


```{r setup, include=FALSE}
#    source_code: embed
library(flexdashboard)
library(tidyverse)
library(data.table)
library(formattable)
library(ggpubr)
library(ggrepel)
library(gt)
library(glue)
library(ggthemes)
library(hrbrthemes)
library(sparkline)
library(plotly)
library(htmlwidgets)
library(mdthemes)
library(ggtext)
library(ggnewscale)
library(DT)
source("./Functions/functions2.R")

thematic::thematic_rmd(font = "auto")

```

```{r Reading in our picks files, include=FALSE}
current_week = 8 #Set what week it is
week_1 = read_csv("./CSV_Data_Files/2024 NFL Week 1.csv") %>% 
  mutate(Name = str_to_title(Name))
week_2 = read_csv("./CSV_Data_Files/2024 NFL Week 2.csv")%>% 
  mutate(Name = str_to_title(Name))
week_3 = read_csv("./CSV_Data_Files/2024 NFL Week 3.csv")%>% 
  mutate(Name = str_to_title(Name))
week_4 = read_csv("./CSV_Data_Files/2024 NFL Week 4.csv")%>%
 mutate(Name = str_to_title(Name))
week_5 = read_csv("./CSV_Data_Files/2024 NFL Week 5.csv")%>% 
  mutate(Name = str_to_title(Name))
week_6 = read_csv("./CSV_Data_Files/2024 NFL Week 6.csv")%>% 
  mutate(Name = str_to_title(Name))
week_7 = read_csv("./CSV_Data_Files/2024 NFL Week 7.csv")%>% 
  mutate(Name = str_to_title(Name))
week_8 = read_csv("./CSV_Data_Files/2024 NFL Week 8.csv")%>% 
  mutate(Name = str_to_title(Name))
# week_9 = read_csv("./CSV_Data_Files/2024 NFL Week 9.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_10 = read_csv("./CSV_Data_Files/2024 NFL Week 10.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_11 = read_csv("./CSV_Data_Files/2024 NFL Week 11.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_12 = read_csv("./CSV_Data_Files/2024 NFL Week 12.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_13 = read_csv("./CSV_Data_Files/2024 NFL Week 13.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_14 = read_csv("./CSV_Data_Files/2024 NFL Week 14.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_15 = read_csv("./CSV_Data_Files/2024 NFL Week 15.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_16 = read_csv("./CSV_Data_Files/2024 NFL Week 16.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_17 = read_csv("./CSV_Data_Files/2024 NFL Week 17.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_18 = read_csv("./CSV_Data_Files/2024 NFL Week 18.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_19 = read_csv("./CSV_Data_Files/2024 NFL Wild Card.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_20 = read_csv("./CSV_Data_Files/2024 NFL Divisional Round.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_21 = read_csv("./CSV_Data_Files/2024 NFL Conference Round.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_22 = read_csv("./CSV_Data_Files/2024 NFL Super Bowl.csv")%>% 
#  mutate(Name = str_to_title(Name))

#reading in scores
Scores = read_csv(glue::glue("./CSV_Data_Files/NFL_Scores_{current_week}.csv")) 

#reading in CBS Prediction Records
cbs = read_csv(glue::glue("./CSV_Data_Files/CBS_Experts_{current_week}.csv")) %>% 
  mutate(Percent = round(Percent,4))
cbs_season = read_csv(glue::glue("./CSV_Data_Files/CBS_Experts_Season_{current_week}.csv"))

#reading in ESPN Prediction Records
espn = read_csv(glue::glue("./CSV_Data_Files/ESPN_Experts_{current_week}.csv"))%>% 
  mutate(Percent = round(Percent,4))
espn_season = read_csv(glue::glue("./CSV_Data_Files/ESPN_Experts_Season_{current_week}.csv"))%>% 
  mutate(Percent = round(Percent,4))

#Odds not working for the 2024 season.  Need to fix scrape code for next year.
#Reading in the moneyline odds for each team and cleaning the team names
# odds_wk1 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_1.csv"))
# odds_wk2 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_2.csv"))
# odds_wk3 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_3.csv"))
# odds_wk4 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_4.csv"))
# odds_wk5 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_5.csv"))
# odds_wk6 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_6.csv"))
# odds_wk7 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_7.csv"))
# odds_wk8 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_8.csv"))
# odds_wk9 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_9.csv"))
# odds_wk10 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_10.csv"))
# odds_wk11 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_11.csv"))
# odds_wk12 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_12.csv"))
# odds_wk13 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_13.csv"))
# odds_wk14 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_14.csv"))
# odds_wk15 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_15.csv"))
# odds_wk16 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_16.csv"))
# odds_wk17 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_17.csv"))
# odds_wk18 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_18.csv"))
# odds_wk19 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_19.csv"))
# odds_wk20 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_20.csv"))
# odds_wk21 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_21.csv"))
# odds_wk22 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_22.csv"))

####################UPDATE THESE###############################
inst.picks = list(week_1, week_2, week_3, week_4, week_5, week_6, week_7, week_8) #, week_9, week_10, week_11, week_12, week_13, week_14, week_15, week_16, week_17 , week_18, week_19 , week_20, week_21, week_22) #add in the additional weeks
# odds = rbind(odds_wk1, odds_wk2, odds_wk3, odds_wk4, odds_wk5, odds_wk6, odds_wk7, odds_wk8,
#              odds_wk9, odds_wk10, odds_wk11, odds_wk12) #add in the additional weeks
####################END OF UPDATE##############################

weeks = as.list(seq(1:current_week)) #creating a list of each week number
```

```{r read in scores clean data, include=FALSE}
#Cleaning Odds Data
# cl_odds = odds_cleaning(odds)

#Cleaning scores data
Scores = cleaning2(Scores)

#creating a list of winners for each week
winners = map(weeks, weekly_winners)

#creating a vector of this weeks winners
this_week = pull(winners[[length(winners)]])  

#Getting the number of games for each week
weekly_number_of_games = map_dbl(weeks, week_number_games)
```

```{r Group Predictions, include=FALSE}
#Creating the list of everyones predictions each week.
games = map(inst.picks, games_fn)

#Creating the prediction table.  
pred_table = map(games, pred_table_fn)

#Adding who won to the predictions
with_winners = map2(pred_table, winners, adding_winners)

#Creating results for each week.
results = map2(with_winners,weekly_number_of_games, results_fn)
```


```{r Displaying Group Results, echo=FALSE}
#Displaying the group results

inst_group_table = results[[length(results)]] %>% gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("This Week's Predictions"),
    #subtitle = md(glue("Week {length(results)}"))
    ) %>% 
   tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(Correct),
      rows = Correct =="No"
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(Correct),
      rows = Correct =="Yes"
    )) %>% 
  tab_options(
    data_row.padding = px(3),
    container.height = "100%"
   )
```

```{r Weekly and season Group Results, include=FALSE}
# Printing the weekly and season win percentage     

#how many games correct, incorrect, and not picked each week
weekly_group_correct = map(results, weekly_group_correct_fn)  

#how many games were picked each week
weekly_games_picked = map2(weekly_group_correct, weekly_number_of_games, weekly_games_picked_fn)

#Calculating the number of correct picks for each week
weekly_group_correct_picks = map(weekly_group_correct, weekly_group_correct_picks_fn)

# Code to manually hard code in week where we get 0 games correct
# ##### Remove this line before next season 
# weekly_group_correct_picks[[21]]=0

#Calculating weekly win percentage
weekly_win_percentage = map2(weekly_group_correct_picks, weekly_games_picked, weekly_win_percentage_fn)

#Calculating season win percentage
season_win_percentage = round(sum(unlist(weekly_group_correct_picks))/sum(unlist(weekly_games_picked)),4)

#Calculating number of games picked this season
season_games = sum(unlist(weekly_games_picked))

#calculating season wins
season_wins = sum(unlist(weekly_group_correct_picks))

#calculating the number of people who picked this week
Total = dim(inst.picks[[length(weeks)]])[1]
```

```{r plotting group results, include=FALSE}
#Previous Weeks
group_season_for_plotting = unlist(weekly_win_percentage) %>% as.data.frame() %>% 
  rename(`Win Percentage` = ".") %>% 
  add_column(Week = unlist(weeks))
```

```{r Plotting the group results, echo=FALSE}
inst_group_season_plot = group_season_for_plotting %>% 
ggplot(aes(x = as.factor(Week), y = `Win Percentage`))+
  geom_point()+
  geom_path(aes(x = Week))+
  ylim(c(0, 1)) +
  xlab("NFL Week") + 
  ylab("Correct Percentage")+
  ggtitle("Weekly Group Correct Percentage")+
  theme_classic()+
  theme(plot.title = element_text(hjust = 0.5, size = 18))
```

```{r beating cbs week, include=FALSE}
#Creating a list of correct percentages for each week.
cbs_weekly_percent = map(weeks, cbs_percent)

#Creating a list of how many cbs experts we beat each week.
cbs_experts_beat = map2(cbs_weekly_percent, weekly_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
cbs_experts_total = map(cbs_weekly_percent, experts_tot)
```

```{r beating cbs season, include=FALSE}
#Creating a list of correct percentages for each week.
cbs_season_percent = map(weeks, cbs_season_percent)

#Creating a list of how many cbs experts we beat each week.
cbs_experts_beat_season = map2(cbs_season_percent, season_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
cbs_experts_season_total = map(cbs_season_percent, experts_tot)
```

```{r beating ESPN week, include=FALSE}
#Creating a list of correct percentages for each week.
espn_weekly_percent = map(weeks, espn_percent)

#Creating a list of how many cbs experts we beat each week.
espn_experts_beat = map2(espn_weekly_percent, weekly_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
espn_experts_total = map(espn_weekly_percent, experts_tot)
```

```{r beating ESPN season, include=FALSE}
#Creating a list of correct percentages for each week.
espn_season_percent = map(weeks, espn_season_percent)

#Creating a list of how many cbs experts we beat each week.
espn_experts_beat_season = map2(espn_season_percent, season_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
espn_experts_season_total = map(espn_season_percent, experts_tot)
```

```{r individual results, include=FALSE}
#Creating a list of individual results for each week.
weekly_indiv = pmap(list(inst.picks, winners, weeks), indiv_weekly_pred)

#Combining each week into one dataframe and calculating percentage Correct for this week.  
full_season = weekly_indiv %>% reduce(full_join, by = "Name") %>% 
  mutate(Percent = round(pull(.[,ncol(.)]/weekly_number_of_games[[length(weekly_number_of_games)]]),4)) 

#Creating a dataframe with only the weekly picks
a = full_season %>% select(starts_with("Week"))

#Creating a vector of how many weeks each person picked over the season
tot_week = NULL
help = NULL
for (i in 1:dim(a)[1]){
  for(j in 1:length(a)){
    help[j] = ifelse(is.na(a[i,j])==T,0,1)
    tot_week[i] = sum(help)
  }
}

#Creating a vector of how many games each person picked over the season
tot_picks= NULL
help = NULL
for (i in 1:dim(a)[1]){
  for(j in 1:length(a)){
    help[j] = unlist(weekly_games_picked)[j]*ifelse(is.na(a[i,j])==T,0,1)
    tot_picks[i] = sum(help)
  }
}

#Creatign a vector of how many games each person picked correct over the season
tot_correct = NULL
help = NULL
for (i in 1:dim(a)[1]){
  tot_correct[i] = sum(a[i,], na.rm = T)
}

#adding how many weeks each person picked, season correct percentage, and adjusted season percentag to the data frame and sorting the data
indiv_disp = full_season %>% add_column(`Weeks Picked` = tot_week) %>%
  add_column(tot_correct)%>%
  add_column(tot_picks)%>%
  mutate(`Season Percent` = round(tot_correct/tot_picks,4))%>%
  mutate(`Adj Season Percent` = round(`Season Percent`*(tot_week/length(a)),4)) %>%
  select(-tot_correct, -tot_picks) %>%
  arrange(desc(Percent), desc(`Season Percent`)) %>%
  mutate(Percent = ifelse(is.na(Percent)==T, 0, Percent))
```


```{r individual percentages, include=FALSE}
#Calculating individual percentages for each week.
weekly_indiv_percent = map2(weekly_indiv, as.list(weekly_number_of_games), indiv_percent) %>% reduce(full_join, by = "Name")

weekly_indiv_percent_plot = weekly_indiv_percent %>% 
  pivot_longer(cols = starts_with("Week"), names_to = "Week", values_to = "Percent")%>%
  mutate(Percent = ifelse(is.na(Percent)==T, 0, Percent)) %>% 
  mutate(Week = as.factor(Week))

levels = NULL
for(i in 1:length(weeks)){
  levels[i] = glue("Week {i}")  
}

weekly_indiv_percent_plot = weekly_indiv_percent_plot %>%
  mutate(Week = factor(Week, levels))
```

```{r sparklines, include=FALSE}
#adding sparklines
plot_group = function(name, df){
  plot_object = 
    ggplot(data = df,
           aes(x = as.factor(Week), y=Percent, group = 1))+
    geom_path(size = 7)+
    scale_y_continuous(limits = c(0,1))+
    theme_void()+
    theme(legend.position = "none")
  return(plot_object)
}

sparklines = 
  weekly_indiv_percent_plot %>% 
  group_by(Name) %>% 
  nest() %>% 
  mutate(plot = map2(Name, data, plot_group)) %>% 
  select(-data)
  
indiv_disp_2 = indiv_disp %>% 
  inner_join(sparklines, by = "Name") %>% 
  mutate(`Season Trend` = NA)
```

```{r Printing Individual Table2, echo=FALSE}
# Printing the individual Table
indiv_table = indiv_disp_2 %>% gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Individual Results"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
   tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(Percent),
      rows = Percent<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(Percent),
      rows = Percent>.5
    )) %>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(indiv_disp_2$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(c(plot))

indiv_winners = indiv_disp_2 %>% filter(Percent == max(Percent)) %>% select(Name) %>% pull() %>% paste(collapse = ", ")
indiv_season = indiv_disp_2 %>% filter(`Season Percent` == max(`Season Percent`)) %>% select(Name) %>% pull() %>% paste(collapse = ", ")
indiv_season_adj = indiv_disp_2 %>% filter(`Adj Season Percent` == max(`Adj Season Percent`)) %>% select(Name) %>% pull()%>% paste(collapse = ", ")
```

```{r Printing Season Leaderboard, echo=FALSE}
# Printing the Season Leaderboard
  
season_leaderboard_disp = indiv_disp_2 %>% select(Name, starts_with("Week ")) %>% 
  pivot_longer(starts_with("Week"),names_to = "Week", values_to = "Correct") %>% 
  group_by(Week) %>% 
  mutate(Correct = case_when(is.na(Correct)==T~0, 
                             TRUE~Correct)) %>% 
  mutate(Donut = case_when(Correct==max(Correct)~1,
                           TRUE~0))  %>% 
  ungroup() %>% 
  group_by(Name) %>% 
  summarise(`Donuts Won` = sum(Donut)) %>% 
  #mutate(`Donuts Won` = strrep("award,", Donuts)) %>% 
  right_join(.,indiv_disp_2) %>% 
  select(-starts_with("Week "), -Percent) %>% 
  mutate(`Season Rank` = min_rank(desc(`Season Percent`)),.before = Name) %>% 
  arrange(`Season Rank`) 
  
season_leaderboard = season_leaderboard_disp %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Season Leaderboard (Season Percent)"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
  # fmt_icon(
  #   columns = `Donuts Won`,
  #   fill_color = "gold",
  # ) %>%
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(season_leaderboard_disp$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(columns = c(plot))
```

```{r Printing Adj Season Leaderboard, echo=FALSE}
# Printing the Adj Season Leaderboard
  
adj_season_leaderboard_disp = indiv_disp_2 %>% select(Name, starts_with("Week ")) %>% 
  pivot_longer(starts_with("Week"),names_to = "Week", values_to = "Correct") %>% 
  group_by(Week) %>% 
  mutate(Correct = case_when(is.na(Correct)==T~0, 
                             TRUE~Correct)) %>% 
  mutate(Donut = case_when(Correct==max(Correct)~1,
                           TRUE~0))  %>% 
  ungroup() %>% 
  group_by(Name) %>% 
  summarise(`Donuts Won` = sum(Donut)) %>% 
  #mutate(`Donuts Won` = strrep("award,", Donuts)) %>% 
  right_join(.,indiv_disp_2) %>% 
  select(-starts_with("Week "), -Percent) %>% 
  mutate(`Season Rank` = min_rank(desc(`Adj Season Percent`)),.before = Name) %>% 
  arrange(`Season Rank`)

adj_season_leaderboard = adj_season_leaderboard_disp %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Season Leaderboard (Adjusted Season Percent)"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
  # fmt_icon(
  #   columns = `Donuts Won`,
  #   fill_color = "gold",
  # ) %>%
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(adj_season_leaderboard_disp$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(columns = c(plot))
```


```{r instructor formattable, echo=FALSE}
improvement_formatter <- 
  formatter("span", 
            style = x ~ formattable::style(
              font.weight = "bold", 
              color = ifelse(x > .5, "green", ifelse(x < .5, "red", "black"))),
             x ~ icontext(ifelse(x == max(x), "star", ""), x))

indiv_disp_3 = indiv_disp_2 %>% select(-plot)
indiv_disp_3$`Season Trend` = apply(indiv_disp_3[,2:(1+length(weeks))], 1, FUN = function(x) as.character(htmltools::as.tags(sparkline(as.numeric(x), type = "line", chartRangeMin = 0, chartRangeMax = 1, fillColor = "white"))))

indiv_table_2 = as.htmlwidget(formattable(indiv_disp_3, 
                                align = c("l", rep("c", NROW(indiv_disp_3)-1)),
              list(`Season Percent` = color_bar("#FA614B"),
              `Season Percent`= improvement_formatter,
              `Adj Season Percent`= improvement_formatter)))
              
indiv_table_2$dependencies = c(indiv_table_2$dependencies, htmlwidgets:::widget_dependencies("sparkline", "sparkline"))
```

```{r Plotting individual results over the season2, eval=FALSE, include=FALSE, out.width="100%"}
#Creating the individual plot.  
inst_indiv_plots = weekly_indiv_percent_plot %>% 
  ggplot(aes(x = factor(Week), y = Percent, color = Name))+
  geom_point()+
  geom_path(aes(x = as.factor(Week), y = Percent, color = Name, 
                group = Name))+
  ylim(c(0, 1)) +
  labs(x = "NFL Week", 
       y = "Correct Percentage", 
       title = "Weekly Individual Correct Percentage")+
  facet_wrap(~Name)+
  theme_classic()+
  theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5, size = 18),
        axis.text.x=element_text(angle =45, vjust = 1, hjust = 1))
```

```{r data for data page}
inst.data = map2(inst.picks, weeks, disp_data) %>% bind_rows()
```


```{r fivethirtyeight}
inst_538 = map(results, five38) %>% unlist() %>% sum()
```

```{r pregame, eval=FALSE, include=FALSE}
#Predictions for the week

#Creating the list of group predictions each week.
games = map(inst.picks, games_fn)

#Creating the prediction table.  
pred_table = map(games, pred_table_fn)

#Printing table of instructor predictions
pred_table[[length(pred_table)]] %>% mutate(Game = row_number()) %>% 
  rename(`Votes For` = votes_for, `Votes Against` = votes_against) %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("This Week's Predictions"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
   tab_options(
    data_row.padding = px(3)
   )
```

Group Predictions
==========================================================================

Sidebar {.sidebar} 
-------------------------------------
#### CBS Sports

<font size="4">

This week we beat or tied `r cbs_experts_beat[[length(weeks)]]` of `r cbs_experts_total[[length(weeks)]]` CBS Sports' Experts.

For the season we are currently beating or tied with `r cbs_experts_beat_season[[length(weeks)]]` of `r cbs_experts_season_total[[length(weeks)]]` CBS Sports' Experts.
 
 </font>


#### ESPN

<font size="4">

We also beat or tied `r espn_experts_beat[[length(weeks)]]` of `r espn_experts_total[[length(weeks)]]` ESPN Experts.
 
For the season we are currently beating or tied with `r espn_experts_beat_season[[length(weeks)]]` of `r espn_experts_season_total[[length(weeks)]]` ESPN Experts.

</font>

Row
--------------------------------------

### Win percentage for the week

```{r}
inst_rate <- weekly_win_percentage[[length(weekly_win_percentage)]]*100
gauge(inst_rate, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(55, 100), warning = c(40, 54), danger = c(0, 39)
))
```

### Season Win Percentage

```{r}
inst_season <- season_win_percentage*100
gauge(inst_season, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(55, 100), warning = c(40, 54), danger = c(0, 39)
))
```

### Games Correct
```{r}
valueBox(value = season_wins,icon = "fa-trophy",caption = "Correct Games this Season")
```

### Games Picked
```{r}
valueBox(value = season_games,icon = "fa-clipboard-list",caption = "Games Picked this Season")
```

### Number of predictions
```{r}
valueBox(value = Total,icon = "fa-users",caption = "Predictions this week")
```

Row
--------------------------------------

### 

```{r}
inst_group_table
```

### 

```{r}
ggplotly(inst_group_season_plot) %>% 
  layout(title = list(y = .93, xref = "plot"),
         margin = list(t = 40))
```

Individual Predictions
==========================================================================


Sidebar {.sidebar} 
-------------------------------------

#### Best Picks of the Week.

<font size="4">

 `r indiv_winners`
 
 </font>
 
#### Best Season Correct Percentage
<font size="4">

`r indiv_season`
 
 </font>

#### Best Adjusted Season Correct Percentage
<font size="4">

`r indiv_season_adj`

 * Adjusted season percentage accounts for the number of weeks picked.
 
 </font>

row {.tabset}
--------------------------------------

### Individual Table
```{r}
indiv_table
```

<!--
### Individual Table2

```{r, out.height="100%"}
indiv_table_2
```

-->

<!--

### Individual Plots
```{r, out.width="100%"}
#ggplotly(inst_indiv_plots)
```

-->

### Season Leaderboard
```{r, out.width="100%"}
season_leaderboard
```

### Adjusted Season Leaderboard
```{r, out.width="100%"}
adj_season_leaderboard
```

Data
==========================================================================

```{r}
datatable(
  inst.data, extensions = 'Buttons', options = list(
    dom = 'Blfrtip',
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
    lengthMenue = list( c(10, 25, 50, 100, -1), c(10, 25, 50, 100, "All") )
  )
)
```